home *** CD-ROM | disk | FTP | other *** search
- #include <Values.h>
- #include <Types.h>
- #include <Resources.h>
- #include <Memory.h>
- #include <Traps.h>
- #include <FixMath.h>
- #include <stdio.h>
- #include <Appletalk.h>
-
- typedef struct CityResourceFormat {
- short fRecordSize;
- long fLatitude, fLongitude;
- long fGMTOffset;
- long fUnknown1;
- Str255 fCityName;
- long fUnknown2;
-
- } CityResourceFormat, *CityResourceFormatPtr;
-
- #define kCityResourceType 'CTY#'
- #define kCityResourceID -4064
-
- typedef struct CityRecord {
- Str63 fCityName;
- extended fLatitude, fLongitude;
- long fGMTOffset;
-
- struct CityRecord* fNext;
- } CityRecord, *CityRecordPtr;
-
-
-
- CityRecordPtr gCitiesRecordList = nil;
-
- Boolean InitializeCitiesList() {
- Handle cityDataH = GetResource ('CTY#', -4064);
- CityRecordPtr cityP = nil, lastCity = nil;
- Ptr r;
- int index, count;
-
- DebugStr ("\p • InitializeCitiesList, entering.");
- if (!cityDataH)
- return false;
-
- HLock(cityDataH);
- count = * (short *) *cityDataH;
- r = *cityDataH + sizeof(short);
-
- for (index = 1; index <= count; ++index) {
- CityRecordPtr cityP = (CityRecordPtr) NewPtrClear(sizeof(*cityP));
-
- if (cityP) {
- CityResourceFormatPtr resP = (CityResourceFormatPtr) r;
-
- BlockMove((Ptr) resP->fCityName, (Ptr) cityP->fCityName, resP->fCityName[0]+1);
- cityP->fLongitude = Frac2X(resP->fLongitude);
- cityP->fLatitude = Frac2X(resP->fLatitude);
- cityP->fGMTOffset = resP->fGMTOffset;
- cityP->fNext = nil;
-
- r += resP->fRecordSize;
-
- if (lastCity) {
- lastCity->fNext = cityP;
- } else {
- gCitiesRecordList = cityP;
- };
- lastCity = cityP;
- } else {
- break;
- };
- };
-
- ReleaseResource (cityDataH);
-
- return true;
- };
-
-
- main() {
- CityRecordPtr cityP;
-
- InitializeCitiesList();
-
- cityP = gCitiesRecordList;
-
- while (cityP) {
- long yOffset = (int) (((cityP->fLatitude)) * 200) + 200;
- long xOffset = (int) (((cityP->fLongitude + 2) * 400 ) / 4.0) + 400;
-
- printf ("%P (%lf, %lf, +%d) [%d, %d]\n", cityP->fCityName, cityP->fLatitude,
- cityP->fLongitude, cityP->fGMTOffset / 3600,
- yOffset, xOffset);
-
-
- cityP = cityP->fNext;
- };
- };
-